package com.example.hystrix;

import com.netflix.hystrix.HystrixCommand;
import com.netflix.hystrix.HystrixCommandGroupKey;

/**
 * HystrixCommand用在依赖服务返回单个操作结果的时候。又两种执行方式
 *
 * 　　  -execute():同步执行。从依赖的服务返回一个单一的结果对象，或是在发生错误的时候抛出异常。
 *
 * 　　  -queue();异步执行。直接返回一个Future对象，其中包含了服务执行结束时要返回的单一结果对象。
 *
 所谓“发射”，大家可以理解为 使用回调方法，发射多次，意味着可以多次调用回调方法，比如：

 1、如果返回了一个List，我们又想把List里的每个对象都处理一下

 2、再或者我们的实现里调用了多个服务，可以每个服务的结果都处理一下
 *
 *
 *
 */
public class CommandHelloWorld extends HystrixCommand<String> {

    private String name;

    public CommandHelloWorld(String name) {
        super(HystrixCommandGroupKey.Factory.asKey("exampleGroup"));
        this.name=name;
    }

    @Override
    protected String run() throws Exception {
        //int i= 1/0;  调用熔断
        return "hello "+ name;
    }

    @Override
    protected String getFallback() {
        return "熔断";
    }
}
